package model

import (
	"fmt"
	"init-database/global"
)

type InitDB struct {
	Host     string `json:"host" default:"127.0.0.1"`
	Port     string `json:"port" default:"3306"`
	Username string `json:"username" default:"root"`
	Password string `json:"password" binding:"required"`
	Database string `json:"database" binding:"required"`
}

// SetDefaults 设置默认值的方法
func (m *InitDB) SetDefaults() string {
	if m.Host == "" {
		m.Host = "127.0.0.1"
	}
	if m.Port == "" {
		m.Port = "3306"
	}
	if m.Username == "" {
		m.Username = "root"
	}
	return fmt.Sprintf("%s:%s@tcp(%s:%s)/", m.Username, m.Password, m.Host, m.Port)
}

// WriteConfig 将数据库配置写入配置文件
func (m *InitDB) WriteConfig() error {
	// 设置配置
	global.GLOBAL_VP.Set("mysql.host", m.Host)
	global.GLOBAL_VP.Set("mysql.port", m.Port)
	global.GLOBAL_VP.Set("mysql.username", m.Username)
	global.GLOBAL_VP.Set("mysql.password", m.Password)
	global.GLOBAL_VP.Set("mysql.database", m.Database)
	global.GLOBAL_VP.Set("mysql.config", "charset=utf8mb4&parseTime=True&loc=Local")

	// 写入配置文件
	return global.GLOBAL_VP.WriteConfig()
}
